package GUI.almacen;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;

import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class ArticulosOeste extends JPanel implements ActionListener {

	private static final long serialVersionUID = 1L;
	private Articulos _articulos;
 
	private JLabel _jlNombre;
	private JLabel _jlDescripcion;
	private JLabel _jlMarca;
	
	private String[] categoria={"Alimentacion","Perfumeria","Higiene"};
	@SuppressWarnings("rawtypes")
	static JComboBox combo_categoria;

	static JTextField _jtNombre;
	static JTextField _jtDescripcion;
	static JTextField _jtMarca;
	static Boton _jbBuscar;
	static Boton _jbLimpiar;
	static Boton _jbTabla;

	private DialogoBusquedaArticulosUnica dbu;
	private DialogoBusquedaArticulosTabla dbt;
	
	private Connection BD;

@SuppressWarnings({ "unchecked", "rawtypes", "static-access" })
public ArticulosOeste(Articulos articulos,Connection c) {
	
	this.BD=c;
	this._articulos=articulos;
	
	this.setBorder(new TitledBorder("Buscar"));
	this.setLayout(new BorderLayout());
	
	/////////////////////////////////////////////////////
	JPanel contiene_jl_jt= new JPanel();
	contiene_jl_jt.setLayout(new GridLayout(2,0));
	
	////////////////////////////////////////////////////
 
		//Panel para Nombre
	JPanel panelNombre= new JPanel();
	panelNombre.setLayout(new GridLayout(2,1));
	_jlNombre= new JLabel("Nombre");
	panelNombre.add(_jlNombre);
	_jtNombre= new JTextField();
	panelNombre.add(_jtNombre);
	contiene_jl_jt.add(panelNombre);
	

	//Panel para Marca
	JPanel panelMarca= new JPanel();
	panelMarca.setLayout(new GridLayout(2,1));
	_jlMarca= new JLabel("Marca");
	panelMarca.add(_jlMarca);
    _jtMarca= new JTextField();
	panelMarca.add(_jtMarca);
	contiene_jl_jt.add(panelMarca);	
	
	/////////////////////////////////////////////////////////////
	this.add(contiene_jl_jt,BorderLayout.NORTH);
	////////////////////////////////////////////////////////////

	//panel para Descripcion
	JPanel panelDescripcion= new JPanel();
	panelDescripcion.setLayout(new GridLayout(3,1));
	_jlDescripcion= new JLabel("Descripcion");
	panelDescripcion.add(_jlDescripcion);
	_jtDescripcion=new JTextField();
	_jtDescripcion.setEditable(false);
	panelDescripcion.add(_jtDescripcion);
	this.combo_categoria=new JComboBox(categoria);
	panelDescripcion.add(combo_categoria);
	this.combo_categoria.addActionListener(new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent arg0) {
			_jtDescripcion.setText(combo_categoria.getSelectedItem().toString());
			
		}
	});
	
 this.add(panelDescripcion,BorderLayout.CENTER);

	/////////////////////////////////////////////////////////
	
	//panel Botones 
	JPanel panelBotones= new JPanel();
	panelBotones.setLayout(new GridLayout(1,3));

	_jbBuscar=new Boton("Buscar");
	_jbBuscar.setActionCommand("Buscar");
	_jbBuscar.addActionListener(this);
	panelBotones.add(_jbBuscar);
	
	_jbLimpiar=new Boton("Limpiar");
	_jbLimpiar.setActionCommand("Limpiar");
	_jbLimpiar.addActionListener(this);
	panelBotones.add(_jbLimpiar);
	
	_jbTabla=new Boton("Tabla");
	_jbTabla.setActionCommand("Tabla");
	_jbTabla.addActionListener(this);
	panelBotones.add(_jbTabla);
	///////////////////////////////////////////////////////////////
	this.add(panelBotones,BorderLayout.SOUTH);
	//////////////////////////////////////////////////////////////
		

	}
    //////////////////'¿?¿?¿?¿?¿??¿?
	private boolean esNumero(String cadena){
		try{
			Integer.parseInt(cadena.trim());
			return true;
		}catch(NumberFormatException nfe){
			return false;
		}	
	}
	
	/***********************************************************
	 * 
	 * BUSQUEDA POR CUALQUIER CAMPO
	 * 
	 * **********************************************************/
	private void accion_al_buscar(){
		String nombre;
		String descripcion;
		String marca;
		
		
		nombre=_jtNombre.getText();
		descripcion=_jtDescripcion.getText();
		marca=_jtMarca.getText();
		
 		if( (this.esNumero(nombre)==true)){
 			JOptionPane.showMessageDialog(this,"Nombre vac�o o num�rico","Buscar Articulo",JOptionPane.ERROR_MESSAGE);
			return;
 		}
 		
 		if( (this.esNumero(descripcion)==true)){
 			JOptionPane.showMessageDialog(this,"Descripcion vac�o o num�rico","Buscar Articulo",JOptionPane.ERROR_MESSAGE);
 			return;
 		}
	
 		if( (this.esNumero(marca)==true)){
 			JOptionPane.showMessageDialog(this,"Marca vac�o o num�rico","Buscar Articulo",JOptionPane.ERROR_MESSAGE);
 			return;
 		}

	//si pas� todos los filtro, ya puede realizar la busqueda.
		realizar_busqueda(nombre,descripcion,marca);
		accion_al_limpiar();
   }
	
	private void realizar_busqueda( String nombre, String descripcion,String marca) {
		   String cadena_nombre;
		   String cadena_descripcion;
		   String cadena_marca;
		   
		   cadena_nombre=nombre;
		   cadena_marca=marca;
		   cadena_descripcion=descripcion;
		   
	      if(cadena_nombre.equalsIgnoreCase("")&&cadena_marca.equalsIgnoreCase("")
	         && cadena_descripcion.equalsIgnoreCase("")){
	    	  JOptionPane.showMessageDialog(this,"No permite vacios","Buscar Articulos",JOptionPane.ERROR_MESSAGE);
	    	  return;
	      }
    	  buscar_datos_completos(cadena_nombre,cadena_marca,cadena_descripcion);
	}
	
	private void buscar_datos_completos(String cadena_nombre,String cadena_marca, String cadena_descripcion) {
		//aqui bien
		dbu= new DialogoBusquedaArticulosUnica(_articulos,cadena_nombre,cadena_marca,cadena_descripcion,BD);
		dbu.setVisible(true);
		
	}
	
/***********************************************************
 * 
 * BUSQUEDA ESTRICTA DE EN TABLA DE UN  1 ELEMENTO
 * 
 * **********************************************************/
    
	private void accion_al_buscar_de_tabla() {
		String nombre;
		String descripcion;
		String marca;
	
	
		nombre=_jtNombre.getText();
		descripcion=_jtDescripcion.getText();
		marca=_jtMarca.getText();
	
		if( (this.esNumero(nombre)==true)){
			JOptionPane.showMessageDialog(this,"Nombre vac�o o num�rico","Buscar Articulo",JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if( (this.esNumero(descripcion)==true)){
			JOptionPane.showMessageDialog(this,"Descripcion vac�o o num�rico","Buscar Articulo",JOptionPane.ERROR_MESSAGE);
			return;
		}
	
		if( (this.esNumero(marca)==true)){
			JOptionPane.showMessageDialog(this,"Marca vac�o o num�rico","Buscar Articulo",JOptionPane.ERROR_MESSAGE);
			return;
		}

		//si pas� todos los filtro, ya puede realizar la busqueda.
		realizar_busqueda_tabla(nombre,descripcion,marca);
		accion_al_limpiar();
}



	private void realizar_busqueda_tabla(String nombre, String descripcion,String marca) {
		String cadena_nombre;
		String cadena_descripcion;
		String cadena_marca;
   
		cadena_nombre=nombre;
		cadena_marca=marca;
		cadena_descripcion=descripcion;
   
		if(cadena_nombre.equalsIgnoreCase("")&&cadena_marca.equalsIgnoreCase("")
			&& cadena_descripcion.equalsIgnoreCase("")){
			JOptionPane.showMessageDialog(this,"No permite vacios","Buscar Articulos",JOptionPane.ERROR_MESSAGE);
			return;
		}

    	  buscar_datos_completos_tabla(cadena_nombre,cadena_marca,cadena_descripcion);
		
	}

	private void buscar_datos_completos_tabla(String cadena_nombre,String cadena_marca, String cadena_descripcion) {
		 dbt= new DialogoBusquedaArticulosTabla(_articulos, cadena_nombre, cadena_marca, cadena_descripcion);
		 dbt.setVisible(true);
		
	}





	private void accion_al_limpiar(){
 
		_jtNombre.setText("");
		_jtNombre.setEditable(true);
		_jtDescripcion.setText("");
		_jtMarca.setText("");
		_jtMarca.setEditable(true);
		combo_categoria.setEnabled(true);
		_jbBuscar.setEnabled(true);
 
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		   String accion= e.getActionCommand();
		   if(accion.equalsIgnoreCase("Buscar"))
		   this.accion_al_buscar();
	   else if(accion.equalsIgnoreCase("Limpiar"))
		   this.accion_al_limpiar();
	   else if(accion.equalsIgnoreCase("Tabla"))
			   this.accion_al_buscar_de_tabla();
	}



}
